package com.wxzz.elearing.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wxzz.elearing.user.dto.SystemMessageDto;
import com.wxzz.elearing.user.dto.SystemMessageSelDto;
import com.wxzz.elearing.user.entity.Enterprise;
import com.wxzz.elearing.user.entity.SystemMessage;
import com.wxzz.elearing.user.entity.WxUser;
import com.wxzz.elearning.common.vo.JgPageVo;
import com.wxzz.elearning.common.vo.ReturnVO;

import java.util.List;

/**
 * <p>
 * 通知 服务类
 * </p>
 *
 * @author
 * @since 2021-05-22
 */
public interface ISystemMessageService extends IService<SystemMessage> {

    void sendSms(SystemMessage systemMessage);

    /**
     * 添加或修改消息通知(后台)
     *
     * @param systemMessage
     * @return
     */
    ReturnVO saveSystemMessage(Long enterpriseId, SystemMessage systemMessage);

    /**
     * 根据id查询消息详情(后台)
     *
     * @param systemMessageId
     * @return
     */
    ReturnVO<SystemMessage> selectSystemMessageById(Long enterpriseId, Long systemMessageId);

    /**
     * 通知列表(小程序)
     *
     * @param systemMessageDto
     * @return
     */
    ReturnVO<JgPageVo<List<SystemMessage>>> wxListSystemMessage(Long commonId, SystemMessageDto systemMessageDto);

    /**
     * 通知列表(后台)
     *
     * @param commonId
     * @param systemMessageDto
     * @return
     */
    ReturnVO<JgPageVo<List<SystemMessage>>> listSystemMessage(Long commonId, SystemMessageDto systemMessageDto);

    /**
     * 通知列表(总后台)
     *
     * @param commonId
     * @param systemMessageDto
     * @return
     */
    ReturnVO<JgPageVo<List<SystemMessage>>> listSystemMessage4platform(Long commonId, SystemMessageDto systemMessageDto);

    /**
     * 根据id查询消息详情(小程序)
     *
     * @param wxUserId
     * @param systemMessageId
     * @return
     */
    ReturnVO<SystemMessage> wxSelectSystemMessageById(Long wxUserId, Long systemMessageId);

    /**
     * 根据当前后台身份列出通知列表(后台)
     *
     * @param enterpriseId
     * @param systemMessageSelDto
     * @return
     */
    ReturnVO<JgPageVo<SystemMessage>> listSystemMessage(Long enterpriseId, SystemMessageSelDto systemMessageSelDto);

    /**
     * 查询发送通知绑定的用户
     *
     * @param systemMessageId
     * @return
     */
    ReturnVO<List<WxUser>> selectSystemMessageByWxUserId(Long systemMessageId);

    /**
     * 查询发送通知绑定的企业
     *
     * @param systemMessageId
     * @return
     */
    ReturnVO<List<Enterprise>> selectSystemMessageByEnterpriseId(Long systemMessageId);

    /**
     * 一键已读
     *
     * @return
     */
    ReturnVO allRead(Long enterpriseId);

    /**
     * 一键已读(小程序)
     * @param wxUserId
     * @return
     */
    ReturnVO wxAllRead(Long wxUserId);

}
